package com.yanxx.codegenerator.format.impl;

import com.yanxx.codegenerator.format.CodeFormatter;

/**
 * 简单的编码格式化器
 * 支持前缀和固定长度的编号格式
 */
public class SimpleCodeFormatter implements CodeFormatter {
    
    private final String prefix;
    private final int codeLength;
    private final char paddingChar;
    
    /**
     * 构造函数
     *
     * @param prefix      编号前缀
     * @param codeLength  编号长度（不包括前缀）
     * @param paddingChar 填充字符
     */
    public SimpleCodeFormatter(String prefix, int codeLength, char paddingChar) {
        this.prefix = prefix != null ? prefix : "";
        this.codeLength = codeLength;
        this.paddingChar = paddingChar;
    }
    
    /**
     * 使用默认填充字符'0'的构造函数
     *
     * @param prefix     编号前缀
     * @param codeLength 编号长度（不包括前缀）
     */
    public SimpleCodeFormatter(String prefix, int codeLength) {
        this(prefix, codeLength, '0');
    }
    
    /**
     * 默认构造函数，使用空前缀、6位长度和'0'填充
     */
    public SimpleCodeFormatter() {
        this("", 6, '0');
    }
    
    @Override
    public String format(long value) {
        String valueStr = String.valueOf(value);
        int paddingLength = codeLength - valueStr.length();
        
        StringBuilder sb = new StringBuilder();
        sb.append(prefix);
        
        // 补零
        for (int i = 0; i < paddingLength; i++) {
            sb.append(paddingChar);
        }
        
        sb.append(valueStr);
        return sb.toString();
    }
    
    @Override
    public String getDescription() {
        return String.format("SimpleCodeFormatter[prefix=%s, length=%d, padding=%s]", 
                prefix, codeLength, paddingChar);
    }
}